// 该文件用于创建Vuex中最核心的store

// 引入 Vue
import Vue from "vue";
// 引入 Vuex
import Vuex from 'vuex'
Vue.use(Vuex)

// 准备actions --- 用于响应组件中的动作
const actions = {
    // 没有逻辑可以跳过actions直接使用commit给mutations去操作
    /*add(context,val){
        console.log('actions中的add被调用了!')
        context.commit('ADD',val)
    },
    sub(context,val){
        console.log('actions中的sub被调用了!')
        context.commit('SUB',val)
    },*/
    addOdd(context,val){
        console.log('actions中的addOdd被调用了!')
        if(context.state.sum %2 ===0){
            context.commit('ADD',val)
        }
    },
    addWait(context,val){
        console.log('actions中的addWait被调用了!')
        setTimeout(function (){
            context.commit('ADD',val)
        },500)
    }
}
// 准备mutations --- 用于操作数据(state)
const mutations = {
    ADD(state,val){
        console.log('mutations中的ADD被调用了!')
        state.sum += val
    },
    SUB(state,val){
        console.log('mutations中的SUB被调用了!')
        state.sum -= val
    },
    ADD_PERSON(state,val){
        console.log('mutations中的ADD_PERSON被调用了!')
        state.personList.push(val)
    }

}
// 准备state --- 用于存储数据
const state = {
    sum:0,
    sheng:'江西',
    shi:'吉安',
    personList:[
        {id:'1',name:'张三'}
    ]
}
//  准备getters  --- 用于将state中的数据进行加工
const getters = {
    bigSum(state){
        return state.sum * 10
    }
}

// 创建并暴露 store
export default new Vuex.Store({
    actions,
    mutations,
    state,
    getters
})